package cn.good.yan.controller;

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * 首页
 * 1. 输入：http://localhost:8080/ 地址
 * 会跳转到 github 的地址，进行登录，输入 github 的账号和密码，登录成功后，进行授权
 * 我们访问到该页面：http://localhost:8080/?continue  ，该页面，有很多github的该用户的信息
 * 2。 退出 在右侧有logout ，退出的按钮，点击进行退出，http://localhost:8080/login?logout
 * 3. 再次点击 github，页面，任然可以有很多github的该用户的信息
 *
 * @author shengren.yan
 * @create 2024-08-01
 */
@Controller
public class IndexController {

    /**
     * 登录成功后】，跳转该地址
     *
     * @param model
     * @param authorizedClient
     * @param oauth2User       记录当前用户登录的信息
     * @return {@link String}
     */
    @GetMapping("/")
    public String index(
            Model model,
            @RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient,
            @AuthenticationPrincipal OAuth2User oauth2User) {
        model.addAttribute("userName", oauth2User.getName());
        model.addAttribute("clientName", authorizedClient.getClientRegistration().getClientName());
        model.addAttribute("userAttributes", oauth2User.getAttributes());
        return "index";
    }

}
